package blog

import (
	"encoding/json"
	"time"
)

type CreateBlogRequest struct {
	Title        string            `json:"title"  comment:"文章"`         //文章
	Author       string            `json:"author" comment:"作者"`         //作者
	CreateByName string            `json:"create_by_name"`              //自动创建用的
	Content      string            `json:"content" comment:"文章内容"`      //作者
	Summary      string            `json:"summary" comment:"概要"`        //概要
	Tags         map[string]string `json:"tags" gorm:"serializer:json"` //标签分类用的
}

type Blog struct {
	//用户登录后。我们通过token知道是哪个用户
	Id int64 `json:"id"`
	// CreateByName       string `json:"create_by_name"` //自动创建用的
	CreateTime         int64  `json:"create_time"`
	UpdateTime         int64  `json:"update_time"`
	PublishedTime      int64  `json:"published_time"`
	Status             Status `json:"status"`        // 文章的状态
	AuditAt            int64  `json:"audit_at"`      // 审核时间
	IsAuditPass        bool   `json:"is_audit_pass"` // 是否审核成功
	*CreateBlogRequest        //接口请求用的
}

func (b *Blog) TableName() string {
	return "blogs"
}

func (b *Blog) String() string {
	dj, _ := json.Marshal(b)
	return string(dj)
}

func NewCreateBlogRequest() *CreateBlogRequest {
	return &CreateBlogRequest{
		Tags: map[string]string{},
	}
}

func NewBlog(req *CreateBlogRequest) *Blog {
	return &Blog{
		CreateTime:        time.Now().Unix(),
		UpdateTime:        time.Now().Unix(),
		Status:            STATUS_DRAFT,
		CreateBlogRequest: req,
	}
}
